1 FreeMarker 란?
- 프리마커는 자바 서블릿을 위한 오픈소스 HTML 템플릿 엔진이다.
- 프리마커에서는 HTML을 템플릿으로 저장하는데 이들은 결국 템플릿 객체로 컴파일 된다.
- 이 템플릿 객체들은 서블리셍서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다.
- 프리마커 객체들은 서블릿에서 제공하는 데이터들을 이용하여 HTML을 동적으로 생성한다.
[*.java]Servlet \+Template[*.ftl] = [*.html]Output
2 FreeMarker 구조
- FreeMarker는 표현의 결과물을 HTML(템플릿)로 관리하고 여기에 자바 객체를 연결하여 최종적인 결과를 만들어낸다.

3 FreeMarker 셋팅
3.1 다운로드
3.2 설치
- freemarker.jar 파일을 WEB-INF/lib 안에 넣는다.
- ecilpse에서는 프로젝트 마다 lib안에 import 시킨다.
3.3 Java 코딩시
import freemarker.template.*;
- FreemarkerServlet를 extends 한 후 Java coding 해주면 된다.
4 FreeMaker 문법
FTL tag
<# >
주석
<#--주석달기-->
반복문
1.
<#list [Object code에서 key값 ] as [별칭할 값]>
2. for(int i=0;i<10;i++)
<#list 1..10 as i >
${i}
<#assign i=i+1?int>
3. 사이즈를 알고 싶을때.. Key 값이 list 인 경우
<#assign size=list?size>
4. 다른 변수로 정의하고 싶을때에는
<#setting [새로]=[기존]>
5. 변수선언
<#assign x=0> <#--x에 0를 할당해 준것이다. -->
x값을 출력하고자 할때 --> ${x}
6. <#macro green>
"<@green>"이런식으로 쓴다.
주로 변하지 않는 변수를 이렇게 선언해서 쓴다.
7. 조건문
<#if>
8. int형으로 선언해 주고 싶은때에는
<#assign x=0 ? int>
5 FreeMarker 예제
5.1 TLD 파일
- fmtag.tld (WEB-INF 아래 위치)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">
<taglib>
<tlibversion>2.0<.tlibversion>
<jspversion>1.1</jspversion>
<shortname>FreeMarker JSP Support</shortname>
<tag>
<name>template</name>
<tagclass>freemarker.ext.jsp.FreemarkerTag</tagclass>
<bodycontent>tagdependent</bodycontent>
<info>Allow evaluation of FreeMarker templates inside JSP</info>
<attribute>
<name>cashing</name>
<required>false</required>
</attribute>
</tag>
</taglib>
5.2 java 파일
- SimpleBean.java (WEB-INF/classes/freemarker/examples/jsp)
- Custom Tag 수행을 위한 Tag Handler Class
package freemarker.examples.jsp;
public class SimpleBean
{
private static String[] arr = {"a","b","c","d"};
private String theString = "Hello from " + toString();
public void setString(String foo)
{
theString = foo;
}
public String getString()
{
return theString;
}
public String[] getArray()
{
return arr;
}
}
5.3 jsp 파일
- freemarker2.jsp (View 파일)
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib uri="/WEB-INF/fmtag.tld" prefix="fm" %>
<jsp:useBean id="mybean" class="freemarker.examples.jsp.SimpleBean"/>
<jsp:useBean id="mybeanreq" class="freemarker.examples.jsp.SimpleBean" scope="request" />
<fm:template>
<html>
<body>
<h1>FreeMarker JSP example</h1>
<hr>
<p>JSP 페이지</p>
<#assign mybean = page.mybean>
<#assign mybeanreq = request.mybeanreq>
<p>page : ${mybean.string}
<#list mybean.array as item>
<br>${item}
</#list>
<p><b>Note:</b>
</body>
</html>
</fm.template>